package cn.deschen.eshop.common.api;

import com.github.pagehelper.PageInfo;
import lombok.Builder;
import lombok.Data;

import java.util.List;

/**
 * @Author hanbin_chen
 * @Description 分页封装类
 * @DateTime 2021/2/20 17:20
 * @Version V1.0.0
 */
@Data
public class CommonPage<T> {


    /**
     * 页码，从1开始
     */
    private int pageNum;
    /**
     * 页面大小
     */
    private int pageSize;
    /**
     * 总数
     */
    private long total;
    /**
     * 总页数
     */
    private int pages;

    /**
     * 分页数据
     */
    private List<T> list;

    /**
     * 将PageHelper分页后的list转为分页信息
     * @param list com.github.pagehelper.Page类型
     * @return
     */
    public static <T> CommonPage<T> restPage(List<T> list) {
        // PageInfo将list的内容（即分页内容）抽取封装
        PageInfo<T> pageInfo = new PageInfo<>(list);
        // 将pageInfo的属性封装成通用分页类
        CommonPage<T> page = new CommonPage<>();
        page.setPageNum(pageInfo.getPageNum());
        page.setPageSize(pageInfo.getPageSize());
        page.setTotal(pageInfo.getTotal());
        page.setPages(pageInfo.getPages());
        page.setList(pageInfo.getList());
        return page;
    }
}
